#pragma once

class CoinInterface;

class AccountInterface {
public:
   // returns what coin this account holds
   virtual const CoinInterface * getCoin() const = 0;

   // returns how much money we have in that account 
   virtual double * getBalance() const = 0;

   // returns the entire account history
   virtual const AccountHistoryInterface * getHistory() const = 0; 

   // returns true, if the account supports history
   virtual bool supportHistory() const = 0;

   // returns if the current account is in market or not
   virtual bool isInMarket() const = 0;

   // returns if the current account is a demo one
   // for example, if we are testing algorithm for trading
   // or we are using demo trading account
   virtual bool isReal() const = 0;

   // returns the descriptor of the account
   // for BitCoins this will be the hash of the wallet
   // for bank account it will be Holder, IBAN, BIC
   virtual const char * getDescriptor() const = 0;
};
